package safari.model.message;

import javax.servlet.http.HttpSession;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;

import safari.model.member.MemberVO;

public class MessageAroundLogging {
	/**
	 * 적용시점(advice): before, after-returning, after-throwing, after
	 * 								around는 위 네가지 advice를 한번에 처리가능하다.
	 * around: ProceedingJoinPoint 를 매개변수로 선언하고 주입받는다.
	 * 				proceed(): 대상 메서드 직접 호출한다.
	 * 				메서드 리턴 타입은 java.lang.Object
	 * 				항상 throws Throwable 을 명시한다.
	 */
	
	Log log=LogFactory.getLog(getClass());
	private ReadReportService rs;
	public MessageAroundLogging(ReadReportService rs){
		this.rs=rs;
	}
	
	public Object aroundLog(ProceedingJoinPoint point) throws Throwable{
		Object retValue=null;
		Object params[]=point.getArgs();
		String myId=(String) params[1];
		System.out.println("myID:"+myId);
		//returnValue 는 이 aop 메서드가 실행될 때 실행되게 하는 메서드의 return 값
		retValue=point.proceed();
		MessageVO msgvo=(MessageVO)retValue;
		String a=rs.runReadReport(msgvo.getNo(),myId);
		System.out.println("결과값"+a);
		log.info("이거 aop");
		System.out.println("여기 aop");
		return retValue;
	}//aroundLog
	
}
